if (icon->surface)
{
gtk_widget_get_preferred_size (GTK_WIDGET (icon), NULL, &req);
- gdk_surface_resize (icon->surface, req.width, req.height);
+ gdk_surface_resize (icon->surface,
+ MAX (1, req.width),
+ MAX (1, req.height));
}
}
{
GtkDragIcon *icon = GTK_DRAG_ICON (widget);
- gtk_drag_icon_move_resize (icon);
-
if (icon->widget)
gtk_widget_allocate (icon->widget, width, height, baseline, NULL);
}
}
static void
-relayout_popup (GtkTooltipWindow *window)
+gtk_tooltip_window_relayout (GtkTooltipWindow *window)
{
+ GtkRequisition req;
GdkPopupLayout *layout;
- if (!gtk_widget_get_visible (GTK_WIDGET (window)))
+ if (!gtk_widget_get_visible (GTK_WIDGET (window)) ||
+ window->surface == NULL)
return;
+ gtk_widget_get_preferred_size (GTK_WIDGET (window), NULL, &req);
layout = create_popup_layout (window);
gdk_surface_present_popup (window->surface,
- gdk_surface_get_width (window->surface),
- gdk_surface_get_height (window->surface),
+ MAX (req.width, 1),
+ MAX (req.height, 1),
layout);
gdk_popup_layout_unref (layout);
}
-static void
-gtk_tooltip_window_move_resize (GtkTooltipWindow *window)
-{
- GtkRequisition req;
-
- if (window->surface)
- {
- gtk_widget_get_preferred_size (GTK_WIDGET (window), NULL, &req);
- gdk_surface_resize (window->surface, req.width, req.height);
-
- relayout_popup (window);
- }
-}
-
static void
gtk_tooltip_window_native_check_resize (GtkNative *native)
{
gtk_widget_ensure_allocate (widget);
else if (gtk_widget_get_visible (widget))
{
- gtk_tooltip_window_move_resize (window);
+ gtk_tooltip_window_relayout (window);
if (window->surface)
gtk_widget_allocate (GTK_WIDGET (window),
gdk_surface_get_width (window->surface),
{
GtkTooltipWindow *window = GTK_TOOLTIP_WINDOW (widget);
- relayout_popup (window);
+ gtk_tooltip_window_relayout (window);
return G_SOURCE_CONTINUE;
}
GtkTooltipWindow *window = GTK_TOOLTIP_WINDOW (widget);
GtkWidget *child;
- gtk_tooltip_window_move_resize (window);
-
child = gtk_bin_get_child (GTK_BIN (window));
if (child)
window->dx = dx;
window->dy = dy;
- relayout_popup (window);
+ gtk_tooltip_window_relayout (window);
}
gtk_widget_get_allocation (widget, &allocation);
surface = gdk_surface_new_toplevel (gtk_widget_get_display (widget),
- allocation.width,
- allocation.height);
+ MAX (1, allocation.width),
+ MAX (1, allocation.height));
priv->surface = surface;
gdk_surface_set_widget (surface, widget);